package com.kun.video.context;

/**
 * 可销毁的Bean生命周期管理接口
 *
 * <p>实现此接口的类需定义Bean销毁时的资源释放逻辑，通常用于：
 * <ul>
 *   <li>关闭数据库连接、网络连接等稀缺资源</li>
 *   <li>清理线程池或定时任务</li>
 *   <li>持久化未保存的数据到磁盘</li>
 * </ul>
 * 容器（如Spring）会在Bean销毁前主动调用此方法。</p>
 *
 * @author gzc
 * @since 2025/2/1 4:31
 **/
public interface DestroyingBean {

    /**
     * 执行销毁操作
     *
     * <p>注意：
     * <ul>
     *   <li>实现类应确保方法幂等性（多次调用无副作用）</li>
     *   <li>避免在此方法中启动新线程或阻塞操作</li>
     *   <li>若需异常处理，应在方法内部捕获并记录日志</li>
     * </ul>
     * </p>
     * <p>
     * 示例：
     * <pre>{@code
     * public class DatabaseConnection implements DestroyingBean {
     *     private Connection conn;
     *
     *     public void destroy() {
     *         if (conn != null) {
     *             conn.close();  // 释放数据库连接
     *             conn = null;
     *         }
     *     }
     * }
     * }</pre>
     */
    void destroy();
}